Cargo tidyverse y plotly, las librerías que vamos a usar en este módulo

library(tidyverse)
library(plotly)

Cargo los datos de los jugadores de la Superliga Argentina

jugadores <- read_csv('https://raw.githubusercontent.com/martoalalu/futbol-data-science/master/data/jugadores_superliga.csv')

Hago la exploración y preparación de datos inicial

#Veo los nombres de los jugadores
unique(jugadores$player)
##   [1] "C. Fara"            "E. Iñíguez"         "F. Andrada"        
##   [4] "F. Assmann"         "F. Bertoglio"       "F. Gino"           
##   [7] "F. Grahl"           "F. Pérez"           "F. Tobares"        
##  [10] "J. Indacoechea"     "L. Di Yorio"        "L. Galeano"        
##  [13] "L. Pocrnjic"        "L. Villalba"        "M. Capasso"        
##  [16] "M. López"           "M. Miers"           "N. Yeri"           
##  [19] "P. Becker"          "R. Contreras"       "R. Martínez"       
##  [22] "Y. Juárez"          "A. Aleo"            "A. Barquett"       
##  [25] "A. Benítez"         "A. Falabella"       "C. Quintana"       
##  [28] "D. Batallini"       "D. Sosa"            "E. Gómez"          
##  [31] "E. López"           "E. Ybañez"          "F. González"       
##  [34] "F. Ibarra"          "F. Ilarregui"       "F. Mac Allister"   
##  [37] "F. Montero"         "F. Vera"            "G. Florentín"      
##  [40] "G. Hauche"          "G. Verón"           "I. Colman"         
##  [43] "J. Sandoval"        "K. Mac Allister"    "L. Ambrogio"       
##  [46] "L. Cháves"          "L. Mosevich"        "M. Angeleri"       
##  [49] "M. Caruzzo"         "M. Centurión"       "M. Coronel"        
##  [52] "M. Miljevic"        "M. Romero"          "M. Torrén"         
##  [55] "N. Forastiero"      "N. Silva"           "S. Silva"          
##  [58] "T. Amilivia"        "T. Andrade"         "A. Antilef"        
##  [61] "D. Núñez"           "E. Cérica"          "E. Méndez"         
##  [64] "E. Papa"            "E. Rescaldani"      "F. Pereyra"        
##  [67] "F. Pons"            "F. Sbuttoni"        "F. Torrent"        
##  [70] "J. Candia"          "J. García"          "J. Kaprof"         
##  [73] "J. Soñora"          "J. Soraire"         "L. Necul"          
##  [76] "L. Picco"           "M. Abreliano"       "M. Carabajal"      
##  [79] "M. Gagliardo"       "R. Zamponi"         "A. Lagos"          
##  [82] "A. Lotti"           "A. Rojas"           "A. Sánchez"        
##  [85] "C. Albornoz"        "C. Erbes"           "C. Lucchetti"      
##  [88] "D. Gissi"           "F. Bravo"           "F. Monzón"         
##  [91] "F. Pizzicanella"    "G. Acosta"          "G. Ortíz"          
##  [94] "G. Risso"           "G. Toledo"          "J. Fernández"      
##  [97] "J. Romero"          "J. Toledo"          "K. Isa Luna"       
## [100] "L. Díaz"            "L. Heredia"         "L. Melano"         
## [103] "M. Alustiza"        "M. Ortiz"           "M. Osores"         
## [106] "N. Aguirre"         "R. Carrera"         "Y. Cabral"         
## [109] "A. Fontana"         "A. Maldonado"       "A. Sosa"           
## [112] "A. Urzi"            "C. Bravo"           "D. Osvaldo"        
## [115] "E. Conde"           "E. Coronel"         "F. Altamirano"     
## [118] "F. Cambeses"        "F. Quinteros"       "G. Galoppo"        
## [121] "J. Álvarez"         "J. Dátolo"          "J. Gutiérrez"      
## [124] "J. Rodriguez"       "L. Gómez"           "M. Arboleda"       
## [127] "M. Payero"          "N. Bertolo"         "N. Leyes"          
## [130] "N. Linares"         "P. Velázquez"       "R. Arciero"        
## [133] "R. Civelli"         "R. Lenis"           "S. Benega"         
## [136] "S. Dubarbier"       "A. Almendra"        "A. Heredia"        
## [139] "A. Obando"          "A. Rossi"           "C. Izquierdoz"     
## [142] "C. Tévez"           "C. Zambrano"        "E. Andrada"        
## [145] "E. Más"             "E. Reynoso"         "E. Salvio"         
## [148] "F. Fabra"           "F. Soldano"         "G. Ávila"          
## [151] "G. Fernández"       "I. Marcone"         "J. Buffarini"      
## [154] "J. Campuzano"       "J. Chicco"          "J. Hurtado"        
## [157] "L. Jara"            "L. Laborda"         "L. López"          
## [160] "M. Díaz"            "M. Roffo"           "M. Weigandt"       
## [163] "M. Zárate"          "N. Capaldo"         "N. Solís"          
## [166] "R. Ábila"           "S. Pérez"           "S. Villa"          
## [169] "W. Bou"             "C. Díaz"            "C. Vega"           
## [172] "D. Cure"            "D. Rodríguez"       "E. Romero"         
## [175] "F. Cristaldo"       "G. Núñez"           "H. Vera"           
## [178] "I. Quílez"          "J. Bay"             "J. Galeano"        
## [181] "J. Galván"          "L. Alzugaray"       "L. Caffaratti"     
## [184] "M. Barraza"         "M. Cavallotti"      "M. Montenegro"     
## [187] "M. Pato"            "M. Sánchez"         "N. Miracco"        
## [190] "O. Salomón"         "P. Argañaraz"       "S. Gallucci"       
## [193] "A. Doffo"           "A. Vigo"            "B. Bianchi"        
## [196] "B. Farioli"         "B. Fernández"       "B. Galván"         
## [199] "C. Bernardi"        "E. Olivera"         "F. Farías"         
## [202] "F. Lértora"         "G. Díaz"            "G. Escobar"        
## [205] "G. Esparza"         "I. Chicco"          "J. Zurbriggen"     
## [208] "L. Burián"          "L. Rodríguez"       "L. Viatri"         
## [211] "M. Fritzler"        "M. Hernández"       "N. Leguizamón"     
## [214] "R. Aliendro"        "R. Delgado"         "R. García"         
## [217] "S. Pierotti"        "T. Chancalay"       "T. Moschión"       
## [220] "T. Sandoval"        "W. Morelo"          "Á. Gonzalez"       
## [223] "C. Lattanzio"       "D. García"          "D. Sappa"          
## [226] "D. Sarmiento"       "E. Kalinski"        "F. Apaolaza"       
## [229] "F. Mura"            "F. Sánchez"         "F. Sivetti"        
## [232] "F. Zuqui"           "G. Gil Romero"      "I. Erquiaga"       
## [235] "I. Gómez"           "J. Fuentes"         "J. Mascherano"     
## [238] "J. Pourtau"         "J. Schunke"         "L. Luna"           
## [241] "M. Andújar"         "M. Ayala"           "M. Castro"         
## [244] "M. Cauteruccio"     "M. Rosales"         "M. Ruiz Díaz"      
## [247] "N. Bazzana"         "N. Colombo"         "N. Estévez"        
## [250] "B. Alemán"          "E. Ramírez"         "F. Mussis"         
## [253] "G. Guiffrey"        "G. Simeone"         "H. Mancilla"       
## [256] "H. Tijanovich"      "J. Agudelo"         "J. Broun"          
## [259] "J. Paradela"        "J. Vargas"          "K. Caraballo"      
## [262] "L. Barrios"         "L. Chávez"          "L. Licht"          
## [265] "L. Morales"         "M. Caire"           "M. Comba"          
## [268] "M. Cuadra"          "M. García"          "M. Gómez"          
## [271] "M. Guanini"         "M. Melluso"         "M. Miranda"        
## [274] "M. Pérez García"    "N. Contín"          "N. Insfrán"        
## [277] "P. Goltz"           "P. Monti"           "S. Cocimano"       
## [280] "T. Durso"           "V. Ayala"           "A. Álvarez"        
## [283] "A. Manzur"          "C. Almeida"         "D. Ortiz"          
## [286] "E. Bullaude"        "F. Henríquez"       "G. Alanís"         
## [289] "G. Carrasco"        "G. Ferrari"         "J. Andrada"        
## [292] "J. Ayoví"           "J. Bolado"          "J. Brunetta"       
## [295] "J. Varela"          "L. Pizarro"         "L. Vella"          
## [298] "M. Freites"         "M. Herrera"         "M. Merentiel"      
## [301] "M. Rouzies"         "R. Ramírez"         "S. García"         
## [304] "S. Lomónaco"        "T. Badaloni"        "T. Cardona"        
## [307] "V. Burgoa"          "V. Ramis"           "W. Cartagena"      
## [310] "Z. Romero"          "A. Calello"         "A. Casco"          
## [313] "A. Chávez"          "A. Curruhinca"      "A. Silva"          
## [316] "B. Maidana"         "C. Araujo"          "C. Ibáñez"         
## [319] "D. Mendoza"         "F. Coniglio"        "F. Cosciuc"        
## [322] "G. Bettini"         "J. Garro"           "J. Vieyra"         
## [325] "L. Grimi"           "L. Merolla"         "M. Bogado"         
## [328] "N. Briasco"         "N. Cordero"         "N. Romat"          
## [331] "R. Cabral"          "S. Hezze"           "S. Navarro"        
## [334] "S. Ramírez"         "S. Salcedo"         "A. Barboza"        
## [337] "A. Franco"          "A. Roa"             "A. Soñora"         
## [340] "A. Velasco"         "B. Martinez"        "B. Romero"         
## [343] "C. Benavidez"       "C. Chávez"          "C. Domínguez"      
## [346] "D. Blanco"          "D. Mercado"         "E. Denis"          
## [349] "E. Mercado"         "F. Bustos"          "F. Gaibor"         
## [352] "G. Asis"            "G. Silva"           "G. Togni"          
## [355] "J. Di Lorenzo"      "J. Sánchez Miño"    "L. Fernández"      
## [358] "L. González"        "L. Romero"          "M. Álvarez"        
## [361] "M. Campaña"         "M. Del Castillo"    "P. Hernández"      
## [364] "R. Bacchia"         "S. Barreto"         "S. Romero"         
## [367] "T. Ortega"          "A. Bernabei"        "E. Muñoz"          
## [370] "F. Barrientos"      "F. Belluschi"       "F. Quignón"        
## [373] "G. Burdisso"        "G. Sara"            "J. Gómez"          
## [376] "J. Martínez"        "J. Sand"            "J. Sinisterra"     
## [379] "L. Acosta"          "L. Di Plácido"      "L. Maciel"         
## [382] "L. Valenti"         "L. Vera"            "M. Astina"         
## [385] "M. Esquivel"        "M. Ibáñez"          "M. Moreno"         
## [388] "M. Pérez"           "M. Vera"            "N. Avellaneda"     
## [391] "N. Morgantini"      "N. Orsini"          "N. Pasquini"       
## [394] "N. Thaller"         "P. De la Vega"      "P. Martínez"       
## [397] "T. Belmonte"        "A. Aguerre"         "Á. Gabrielli"      
## [400] "A. Moreno"          "A. Rodríguez"       "B. Rivero"         
## [403] "C. Insaurralde"     "E. Cabrera"         "F. Fontanini"      
## [406] "F. Nadalín"         "I. Scocco"          "J. Cacciabue"      
## [409] "L. Albertengo"      "L. Ferroni"         "Luís Leal"         
## [412] "M. Bíttolo"         "M. Fórmica"         "Maxi Rodríguez"    
## [415] "N. Castro"          "N. Ibáñez"          "N. Temperini"      
## [418] "R. Salinas"         "S. Callegari"       "S. Gentiletti"     
## [421] "S. Palacios"        "A. Guiffrey"        "A. Sufi"           
## [424] "B. Negro"           "B. Nievas"          "B. Urribarri"      
## [427] "C. Chimino"         "C. Tarragona"       "D. Lemos"          
## [430] "D. Miloc"           "F. Costa"           "F. Dettler"        
## [433] "F. Luna"            "F. Mancinelli"      "G. Ávalos"         
## [436] "G. Compagnucci"     "H. Silveira"        "J. Barreto"        
## [439] "J. Franzoni"        "J. Galetto"         "L. Comas"          
## [442] "L. Marín"           "M. Abero"           "M. Aruga"          
## [445] "M. Escudero"        "O. Benítez"         "P. Cortizo"        
## [448] "S. Briñone"         "W. Andrade"         "A. Solari"         
## [451] "A. Soto"            "B. Garré"           "C. Alcaraz"        
## [454] "D. Barbona"         "D. Cvitanich"       "D. González"       
## [457] "E. Cardozo"         "E. Mena"            "F. Zaracho"        
## [460] "G. Arias"           "G. Gómez"           "G. Piovi"          
## [463] "H. Fértoli"         "I. Maggi"           "I. Pillud"         
## [466] "J. Caceres"         "J. Cristaldo"       "J. López"          
## [469] "J. Patiño"          "L. Andrada"         "L. Bareiro"        
## [472] "L. Miranda"         "L. Orbán"           "L. Sigali"         
## [475] "M. Martínez"        "M. Meli"            "M. Ojeda"          
## [478] "M. Rojas"           "N. Domínguez"       "N. Oroz"           
## [481] "N. Reniero"         "R. Centurión"       "S. Rosales"        
## [484] "T. Banega"          "W. Montoya"         "B. Rollheiser"     
## [487] "B. Zuculini"        "C. Auzqui"          "C. Ferreira"       
## [490] "E. Bologna"         "E. Pérez"           "F. Angileri"       
## [493] "F. Armani"          "F. Paredes"         "G. Lux"            
## [496] "G. Montiel"         "H. Martínez"        "I. Fernández"      
## [499] "I. Rossi"           "J. Arzura"          "J. Carrascal"      
## [502] "J. Moreira"         "J. Pinola"          "J. Quintero"       
## [505] "L. Beltran"         "L. Lollo"           "L. Martínez Quarta"
## [508] "L. Ponzio"          "L. Pratto"          "M. Casco"          
## [511] "M. Moya"            "M. Suárez"          "N. De La Cruz"     
## [514] "P. Díaz"            "R. Borré"           "R. Rojas"          
## [517] "S. Sosa"            "A. Marinelli"       "C. González"       
## [520] "C. Riaño"           "C. Rius"            "D. Becker"         
## [523] "D. Martínez"        "D. Novaretti"       "D. Vergara"        
## [526] "D. Zabala"          "E. Brítez"          "E. Ojeda"          
## [529] "F. Almada"          "F. Lo Celso"        "F. Martínez"       
## [532] "F. Rinaudo"         "J. Ayala"           "J. Laso"           
## [535] "J. Ledesma"         "J. Mazzaco"         "J. Pereyra"        
## [538] "K. Gutiérrez"       "L. Gamba"           "L. Rivas"          
## [541] "M. Miño"            "M. Rubén"           "N. Colazo"         
## [544] "R. González"        "R. Villagra"        "S. Ribas"          
## [547] "A. Díaz"            "A. Donatti"         "A. Gaich"          
## [550] "A. Hausch"          "A. Martegani"       "Á. Romero"         
## [553] "B. Pittón"          "E. Cerutti"         "E. Pereyra"        
## [556] "F. Coloccini"       "F. Flores"          "F. Monetti"        
## [559] "F. Moyano"          "G. Gudiño"          "G. Hernández"      
## [562] "G. Peralta"         "G. Peruzzi"         "G. Poblete"        
## [565] "G. Rojas"           "I. Piatti"          "J. Acevedo"        
## [568] "J. Palacios"        "J. Ramírez"         "L. Menossi"        
## [571] "L. Sequeira"        "M. Palacios"        "M. Peralta"        
## [574] "N. Fernández"       "N. Navarro"         "Ó. Romero"         
## [577] "R. Arias"           "R. Loaiza"          "S. Torrico"        
## [580] "S. Vergini"         "V. Salazar"         "A. Araujo"         
## [583] "A. Cubas"           "A. Schott"          "B. Guzmán"         
## [586] "D. Moreno"          "D. Valoyes"         "E. Díaz"           
## [589] "F. Bersano"         "F. Cabral"          "F. Fragapane"      
## [592] "F. Navarro"         "G. Herrera"         "Guilherme Parede"  
## [595] "I. Escobar"         "J. Arias"           "J. Blázquez"       
## [598] "J. Gandolfi"        "J. Komar"           "J. Méndez"         
## [601] "J. Menéndez"        "L. Godoy"           "M. Caranta"        
## [604] "N. Bustos"          "N. Giménez"         "N. Tenaglia"       
## [607] "R. Paparelli"       "R. Pérez"           "T. Pochettino"     
## [610] "A. Pussetto"        "B. Blasi"           "C. Corvalán"       
## [613] "E. Bonifacio"       "E. Cecchini"        "F. Calderón"       
## [616] "F. Elizari"         "F. Gerometta"       "F. Godoy"          
## [619] "F. Milo"            "F. Troyansky"       "G. Carabajal"      
## [622] "G. Comas"           "G. González"        "J. Bottinelli"     
## [625] "J. Cabrera"         "J. Nardoni"         "J. Zules"          
## [628] "L. Ríos"            "M. Cañete"          "M. Luna Diale"     
## [631] "M. Peano"           "N. Mazzola"         "S. Assis"          
## [634] "S. Moyano"          "Á. Barreal"         "A. Bouzat"         
## [637] "A. Domínguez"       "A. Montero"         "B. Cufré"          
## [640] "C. Núñez"           "D. Fernández"       "E. Amor"           
## [643] "E. Bogado"          "F. Alvarenga"       "F. Gago"           
## [646] "F. Ortega"          "G. Mainero"         "H. De La Fuente"   
## [649] "J. Ramis"           "L. Abram"           "L. Giannetti"      
## [652] "L. Hoyos"           "L. Janson"          "L. Orellano"       
## [655] "L. Robertone"       "M. Brizuela"        "M. Pittón"         
## [658] "N. Delgadillo"      "P. Galdames"        "R. Álvarez"        
## [661] "R. Ríos"            "T. Almada"          "T. Guidara"        
## [664] "T. Zárate"
#Filtro el dataset por José Sand y luego genero variables que calculen diferentes métricas no existentes en el dataset
sand <- jugadores %>% filter(player=="J. Sand") %>% mutate(prop_acc_exitosas=sum(total_actions_successful)/sum(total_actions)*100,                                                   prop_tiros_arco=sum(shots_on_target)/sum(total_shots)*100,
acierto_pase=sum(passes_accurate)/sum(total_passes)*100,
prop_duels_won=sum(duels_won)/sum(total_duels)*100,
prop_def_duels_won=sum(defensive_duels_won)/sum(total_defensive_duels)*100,
prop_att_duels_won=sum(offensive_duels_won)/sum(total_offensive_duels)*100)

#Luego me quedo con el primer registro y sólo las variables que yo cree, que se repiten cada registro
sand <- sand[1,c('prop_acc_exitosas', 'prop_tiros_arco', 'acierto_pase', 'prop_duels_won', 'prop_def_duels_won', 'prop_att_duels_won')]

#Repito la misma acción para Ramón Ábila
abila <- jugadores %>% filter(player=="R. Ábila") %>% mutate(prop_acc_exitosas=sum(total_actions_successful)/sum(total_actions)*100,                                                   prop_tiros_arco=sum(shots_on_target)/sum(total_shots)*100,
acierto_pase=sum(passes_accurate)/sum(total_passes)*100,
prop_duels_won=sum(duels_won)/sum(total_duels)*100,
prop_def_duels_won=sum(defensive_duels_won)/sum(total_defensive_duels)*100,
prop_att_duels_won=sum(offensive_duels_won)/sum(total_offensive_duels)*100)

abila <- abila[1,c('prop_acc_exitosas', 'prop_tiros_arco', 'acierto_pase', 'prop_duels_won', 'prop_def_duels_won', 'prop_att_duels_won')]

#Uno ambos datasets
data <- rbind(sand, abila)
data
#Le asigno nombres a los índices
row.names(data) <- c('José Sand', 'Ramon Ábila')
## Warning: Setting row names on a tibble is deprecated.
#Y convierto mis datos a matriz
data <- as.matrix(data)

Genero mi gráfico de a partes

#Guardo mis nombres de atributos y su extensión
Attributes = colnames(data)
AttNo = length(Attributes)

#Genero mi data con un valor final igual para asegurar el círculo
data <- cbind(data, data[,1])

#Seteo el marco con ggplot
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150))

#Genero una función que me traiga el círculo
circleFun <- function(center = c(0,0),diameter = 1, npoints = 100){
    r = diameter / 2
    tt <- seq(0,2*pi,length.out = npoints)
    xx <- center[1] + r * cos(tt)
    yy <- center[2] + r * sin(tt)
    return(data.frame(x = xx, y = yy))
}

#Genero los círculos que van a dar el radar
circle1 <- circleFun(c(0,0),200,npoints = 100)
circle2 <- circleFun(c(0,0),150,npoints = 100)
circle3 <- circleFun(c(0,0),100,npoints = 100)
circle4 <- circleFun(c(0,0),50,npoints = 100)

## Agrego el background del radar
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego los círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9")

## Agrego el background
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego los círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") +
## Agrego un fondo removiendo el predeterminado por ggplot
theme_void()

angle_spilt <- (2*pi) / (AttNo)
angle_spilt_seq <- seq(0,(2*pi),angle_spilt)
angle_spilt_seq
## [1] 0.000000 1.047198 2.094395 3.141593 4.188790 5.235988 6.283185
# Genero dataframes vacíos para albergar mis variables
LineData <- data.frame(x=NA, y=NA, stringsAsFactors = F)
TitlePositioning <- data.frame(title=NA, x=NA, y=NA, stringsAsFactors = F)

## Creo el background donde voy a construir los datos con un for loop 
for (i in 1:NCOL(data)) {
  angle_multiplier <- if(i < NCOL(data)){i}else{1}
  radians_for_segment <- angle_spilt_seq[i]

  x <- 100 * cos(radians_for_segment)
  y <- 100 * sin(radians_for_segment)
  temp <- data.frame(x = x, y = y, stringsAsFactors = F)
  LineData <- rbind(temp, LineData)
  
  x <- 112 * cos(radians_for_segment)
  y <- 112 * sin(radians_for_segment)
  title <- colnames(data)[i]
  temp <- data.frame(title = title, x = x, y = y, stringsAsFactors = F)
  TitlePositioning <- rbind(temp, TitlePositioning)
}

## Creo las etiquetas de mis datos
values <- c(25,50,75)
radian_for_values <- angle_spilt / 2
x <- values * cos(radian_for_values)
y <- values * sin(radian_for_values)
ValuePositioning <- data.frame(values = values, x = x, y = y, stringsAsFactors = F)

## Agrego valores de origen para las líneas 
LineData$x2 <- 0
LineData$y2 <- 0

## Chequeo la data
LineData
TitlePositioning
ValuePositioning
## Agrego el background
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego los círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") +
## Saco el fondo
theme_void() +
## Agrego líneas y los nombres de los atributos
geom_segment(data=LineData, aes(x = LineData$x, y = LineData$y, xend = LineData$x2, yend = LineData$y2),colour = "#d9d9d9", linetype = "dashed") + 
annotate("text", x = TitlePositioning$x , y = TitlePositioning$y, label = TitlePositioning$title, size= 3.5) +  
annotate("text", x = ValuePositioning$x , y = ValuePositioning$y, label = ValuePositioning$values, size= 3.5, colour = "#969696")
## Warning: Use of `LineData$x` is discouraged. Use `x` instead.
## Warning: Use of `LineData$y` is discouraged. Use `y` instead.
## Warning: Use of `LineData$x2` is discouraged. Use `x2` instead.
## Warning: Use of `LineData$y2` is discouraged. Use `y2` instead.
## Warning: Removed 1 rows containing missing values (geom_segment).
## Warning: Removed 1 rows containing missing values (geom_text).

# Genero un dataframe vacío para albergar la data
polydata <- data.frame(player=NA, value=NA, radians=NA, x=NA, y=NA, stringsAsFactors = F)

## Creo el polígono para los datos de mis jugadores
for (i in 1:NCOL(data)) {
  
  for (p in 1:NROW(data)) {
    
  player2calc <- data[p,]
  angle_multiplier <- if(i < NCOL(data)){i}else{1}
  radians_for_segment <- angle_spilt_seq[i]
  x <- player2calc[i] * cos(radians_for_segment)
  y <- player2calc[i] * sin(radians_for_segment)
  player <- rownames(data)[p]
  temp <- data.frame(player = player, value = player2calc[i], radians = radians_for_segment, x = x, y = y, stringsAsFactors = F)
  polydata <- rbind(temp, polydata)
  }
}
head(polydata)
## Separo la data entre jugador 1 y jugador 2
playersDB <- unique(polydata$player)
player1 <- polydata[(polydata$player == playersDB[1]),]
player2 <- polydata[(polydata$player == playersDB[2]),]

## Agrego el background visual
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") +
## Cambio el tema a vacío (remuevo el default)
theme_void() +
## Agrego los segmentos de líneas y los títulos de atributos y valores 
geom_segment(data=LineData, aes(x = LineData$x, y = LineData$y, xend = LineData$x2, yend = LineData$y2),colour = "#d9d9d9", linetype = "dashed") + 
annotate("text", x = TitlePositioning$x , y = TitlePositioning$y, label = TitlePositioning$title, size= 3.5) +  
annotate("text", x = ValuePositioning$x , y = ValuePositioning$y, label = ValuePositioning$values, size= 3.5, colour = "#969696") +
## Agrego la data del jugador 1
geom_polygon(data = player1, aes(x=x,y=y),fill = "#A30845", colour = "#A30845", alpha = 0.3) + geom_point(data = player1, aes(x = x, y = y),size=0.3, colour= "#A30845")
## Warning: Use of `LineData$x` is discouraged. Use `x` instead.
## Warning: Use of `LineData$y` is discouraged. Use `y` instead.
## Warning: Use of `LineData$x2` is discouraged. Use `x2` instead.
## Warning: Use of `LineData$y2` is discouraged. Use `y2` instead.
## Warning: Removed 1 rows containing missing values (geom_segment).
## Warning: Removed 1 rows containing missing values (geom_text).
## Warning: Removed 1 rows containing missing values (geom_point).

## Creo el string para el jugador 1
Player1_title <- gsub('([[:upper:]])', ' \\1', playersDB[1])
Player1_title <- trimws(Player1_title)

## Agrego el background
ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") +
## Cambio el tema a vacío (remuevo el default)
theme_void() +
## Agrego los segmentos de líneas y los títulos de atributos y valores 
geom_segment(data=LineData, aes(x = LineData$x, y = LineData$y, xend = LineData$x2, yend = LineData$y2),colour = "#d9d9d9", linetype = "dashed") + 
annotate("text", x = TitlePositioning$x , y = TitlePositioning$y, label = TitlePositioning$title, size= 4.5) +  
annotate("text", x = ValuePositioning$x , y = ValuePositioning$y, label = ValuePositioning$values, size= 4.5, colour = "#969696") +
## Agrego la data del jugador 1
geom_polygon(data = player1, aes(x=x,y=y),fill = "#A30845", colour = "#A30845", alpha = 0.3) + geom_point(data = player1, aes(x = x, y = y),size=1, colour= "#A30845") + 
## Agrego título
annotate("text", x = -110 , y = 130, label = Player1_title, size= 10, colour = "#A30845", family = "Helvetica", fontface = "bold", hjust = 0) + 
annotate("text", x = 110 , y = 130, label = "Superliga Argentina Data", size= 10, colour = "#969696", family = "Helvetica", fontface = "bold", hjust = 1)
## Warning: Use of `LineData$x` is discouraged. Use `x` instead.
## Warning: Use of `LineData$y` is discouraged. Use `y` instead.
## Warning: Use of `LineData$x2` is discouraged. Use `x2` instead.
## Warning: Use of `LineData$y2` is discouraged. Use `y2` instead.
## Warning: Removed 1 rows containing missing values (geom_segment).
## Warning: Removed 1 rows containing missing values (geom_text).
## Warning: Removed 1 rows containing missing values (geom_point).

## Creo string de título para el jugador 2
Player2_title <- gsub('([[:upper:]])', ' \\1', playersDB[2])
Player2_title <- trimws(Player2_title)

## Agrego el background
p <- ggplot() + xlim(c(-120, 120)) + ylim(c(-120, 150)) + 
## Agrego círculos
geom_polygon(data = circle1, aes(x=x,y=y),fill = "#F0F0F0", colour = "#969696") + geom_polygon(data = circle2, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") + geom_polygon(data = circle3, aes(x=x,y=y),fill = "#F0F0F0", colour = "#d9d9d9") + geom_polygon(data = circle4, aes(x=x,y=y),fill = "#FFFFFF", colour = "#d9d9d9") +
## Cambio el tema a vacío (remuevo el default)
theme_void() +
## Agrego los segmentos de líneas y los títulos de atributos y valores 
geom_segment(data=LineData, aes(x = LineData$x, y = LineData$y, xend = LineData$x2, yend = LineData$y2),colour = "#d9d9d9", linetype = "dashed") + 
annotate("text", x = TitlePositioning$x , y = TitlePositioning$y, label = TitlePositioning$title, size= 3.5) +  
annotate("text", x = ValuePositioning$x , y = ValuePositioning$y, label = ValuePositioning$values, size= 3.5, colour = "#969696") +
## Agrego la data del jugador 1
geom_polygon(data = player1, aes(x=x,y=y),fill = "#A30845", colour = "#A30845", alpha = 0.3) + geom_point(data = player1, aes(x = x, y = y),size=0.3, colour= "#A30845") + 
## Agrego título
annotate("text", x = -110 , y = 130, label = Player1_title, size= 5, colour = "#A30845", family = "Helvetica", fontface = "bold", hjust = 0) + 
annotate("text", x = 110 , y = 130, label = "Superliga Argentina Data", size= 4, colour = "#969696", family = "Helvetica", fontface = "bold", hjust = 1) +
## Agrego la data del jugador 2
geom_polygon(data = player2, aes(x=x,y=y),fill = "#00B20B", colour = "#00B20B", alpha = 0.3) +
geom_point(data = player2, aes(x = x, y = y),size=0.3, colour= "#00B20B") +
## Agrego títulos de jugador 2
annotate("text", x = -110 , y = 116, label = Player2_title, size= 5, colour = "#00B20B", family = "Helvetica", fontface = "bold", hjust = 0) + 
annotate("text", x = -110 , y = 123 , label = "vrs", size= 3, colour = "#969696", family = "Helvetica", hjust = 0)

p
## Warning: Use of `LineData$x` is discouraged. Use `x` instead.
## Warning: Use of `LineData$y` is discouraged. Use `y` instead.
## Warning: Use of `LineData$x2` is discouraged. Use `x2` instead.
## Warning: Use of `LineData$y2` is discouraged. Use `y2` instead.
## Warning: Removed 1 rows containing missing values (geom_segment).
## Warning: Removed 1 rows containing missing values (geom_text).
## Warning: Removed 1 rows containing missing values (geom_point).

## Warning: Removed 1 rows containing missing values (geom_point).

Puedo darle interactividad a mi gráfico, aunque no es muy vistoso porque mi gráfico tiene varias capas generadas para darle un estilo específico al gráfico

ggplotly(p)
## Warning: Use of `LineData$x` is discouraged. Use `x` instead.
## Warning: Use of `LineData$y` is discouraged. Use `y` instead.
## Warning: Use of `LineData$x2` is discouraged. Use `x2` instead.
## Warning: Use of `LineData$y2` is discouraged. Use `y2` instead.

Probamos con otro gráfico sobre los mismos datos

#Vuelvo a generar los datos de ambos jugadores
data <- rbind(sand, abila)
#Agrego variable con el nombre de los jugadores
data$jugador <- c("José Sand", "Ramon Ábila")
#Uso gather() para acondicionarlos
data_plot <- gather(
  data,
  key = "variable",
  value = "value",
  na.rm = FALSE,
  convert = FALSE,
  factor_key = FALSE,
  -jugador
)

#Genero un gráfico de barras
bar_plot <- ggplot(data_plot, aes(fill=jugador, y=value, x=variable)) + 
    geom_bar(position="dodge", stat="identity") + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

#Lo chequeo
bar_plot

#Le agrego interactividad
ggplotly(bar_plot)